﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Windows.Forms;
using LPV_POS.Module;

namespace LPV_POS
{   
    class xl_filetext  
    {
        //'*********************************************************
        //Chức năng: đọc nội dung file text đưa vào
        //các biến toàn cục
        //Tham số vào: pStrFullPathFile: đường dẫn file text
        //Tham số ra: 1:thành công; 0:thất bại
        //Người tạo: To Hoai Chuong - 20101005
        //Người sửa: 
        //*********************************************************
        public byte f_readfiletext(string pStrFullPathFile)
        {
            byte tempgfReadFile_LPVINI = 0;
            try
            {
                tempgfReadFile_LPVINI = 0;

                //kiểm tra có file k?
                if (pStrFullPathFile != "")
                {

                    StreamReader srdReadFile = new StreamReader(pStrFullPathFile, System.Text.Encoding.Unicode);

                    string strTextLine = null;
                    string strSession = null;

                    //đọc 1 dòng

                    strTextLine = srdReadFile.ReadLine();
                    while (strTextLine != null && strTextLine !="")
                    {
                        if (strTextLine.Substring(0, 1) == "[")
                        {
                            strSession = strTextLine.Substring(0, (strTextLine.IndexOf("]", 0) + 1));

                            strTextLine = strTextLine.Replace(strSession, "")+" ";

                            switch (strSession)
                            {
                                case "[00001]": // ten cong ty
                                    Variable.str_tencongty  = strTextLine;
                                    break;
                                case "[00002]": // dia chi cong ty
                                    Variable.str_diachicongty = strTextLine;
                                    break;
                                case "[00003]": // ma so thue cong ty
                                    Variable.str_masothuecongty = strTextLine;
                                    break;
                                case "[00004]": // chu ky 1
                                    Variable.str_chuky1 = strTextLine;
                                    break;
                                case "[00005]": //chu ky 2
                                    Variable.str_chuky2 = strTextLine;
                                    break;
                                case "[00006]": //chu ky 3
                                    Variable.str_chuky3 = strTextLine;
                                    break;
                                case "[00007]": //chu ky 4
                                    Variable.str_chuky4 = strTextLine;
                                    break;
                                case "[00008]": //chu ky 5
                                    Variable.str_chuky5 = strTextLine;
                                    break;
                                case "[00009]": //chu ky 5
                                    Variable.str_tencongty_true = strTextLine;
                                    break;
                                case "[00010]": //chu ky 5
                                    Variable.str_diachicongty_true = strTextLine;
                                    break;
                                case "[00011]": //chu ky 5
                                    Variable.str_masothuecongty_true = strTextLine;
                                    break;
                                case "[00012]": //chu ky 5
                                    Variable.str_chuky1_true = strTextLine;
                                    break;
                                case "[00013]": //chu ky 5
                                    Variable.str_chuky2_true = strTextLine;
                                    break;
                                case "[00014]": //chu ky 5
                                    Variable.str_chuky3_true = strTextLine;
                                    break;
                                case "[00015]": //chu ky 5
                                    Variable.str_chuky4_true = strTextLine;
                                    break;
                                case "[00016]": //chu ky 5
                                    Variable.str_chuky5_true = strTextLine;
                                    break;
                              
                                default:
                                    break;
                            }
                        }

                        strTextLine = srdReadFile.ReadLine();
                    }
                    //gán chuỗi kết nối
                    // gStrConLPVSALLIST = gconStrServer + gStrServer + gconStrDB + gconStrLPVSALLIST + gconStrUser + gStrUserID + gconStrPass + gStrPassword;
                    //gán chuỗi kết nối LPVSALDATYYYYMM
                    //gStrConLPVSALDAT = gconStrServer + gStrServer + gconStrDB + gconStrLPVSALDAT + gStrSelectMonth + gconStrUser + gStrUserID + gconStrPass + gStrPassword;

                    tempgfReadFile_LPVINI = 1;

                    srdReadFile.Close();
                    srdReadFile = null;
                }
                else
                {
                    //chỗ này chưa đọc được file ngôn ngữ
                    //MessageBox.Show("Không tìm thấy tập tin khởi tạo hệ thống " + System.Environment.NewLine + "mdlFile - gfReadFile_LPVINI: ", string.Empty, MessageBoxButtons.OK, MessageBoxIcon.Error);
                    Mod_messagebox mess = new Mod_messagebox();
                    mess.messagebox_pos("Thông báo", "Không tìm thấy tập tin khởi tạo hệ thống", loaithongbao.canhbao.GetHashCode());

                }

            }
            catch (Exception ex)
            {
                //chỗ này chưa đọc được file ngôn ngữ
                //MessageBox.Show("Không đọc được tập tin khởi tạo hệ thống " + System.Environment.NewLine + "mdlFile - gfReadFile_LPVINI: " + System.Environment.NewLine + ex.Message, string.Empty, MessageBoxButtons.OK, MessageBoxIcon.Error);
                Mod_messagebox mess = new Mod_messagebox();
                mess.messagebox_pos("Thông báo", "Không đọc được tập tin khởi tạo hệ thống", loaithongbao.baoloi.GetHashCode());

            }
            finally
            {

            }
            return tempgfReadFile_LPVINI;
        }

//----------------------------------------------------------------------------------------------------------------------------------------

        //*********************************************************
        //Chức năng: ghi file text từ mảng
        //Tham số vào: parrStr:mảng 
        //   pStrFullPathFile: đường dẫn file text
        //Tham số ra: 1:thành công;0:thất bại
        //Người tạo: To Hoai Chuong
        //Người sửa: 
        //*********************************************************
        public byte f_writefile_From_Array(string[] parrStr, string pStrFullPathFile)
        {
            byte tempgfWriteFile_From_Array = 0;

            long lngIndex = 0;
            try
            {
                tempgfWriteFile_From_Array = 0;

                StreamWriter srdWriteFile = new StreamWriter(pStrFullPathFile, true, System.Text.Encoding.Unicode);

                lngIndex = 0;

                for (lngIndex = 0; lngIndex <= parrStr.GetUpperBound(0); lngIndex++)
                {
                    srdWriteFile.WriteLine(parrStr[lngIndex]);
                }

                srdWriteFile.Close();
                srdWriteFile = null;

                tempgfWriteFile_From_Array = 1;

            }
            catch (Exception ex)
            {
                //MessageBox.Show(gArrStrMess(1) + System.Environment.NewLine + "mdlFile - gfWriteFile_From_Array " + System.Environment.NewLine + ex.Message, string.Empty, MessageBoxButtons.OK, MessageBoxIcon.Error);
                Mod_messagebox mess = new Mod_messagebox();
                mess.messagebox_pos("Thông báo", "Ghi file từ mảng không thành công", loaithongbao.canhbao.GetHashCode());

            }
            finally
            {

            }

            return tempgfWriteFile_From_Array;
        }
//--------------------------------------------------------------------------------------------------------------------------------------------------
        //*********************************************************
        //Chức năng: copy file 
        //Tham số vào: pstrFilename:tên file gốc
        //   pStrPathFile: đường dẫn file text gốc
        //pstrFilenameDes:tên file nguồn
        //pStrPathFileDes: đường dẫn file text nguồn
        //Tham số ra: 1:thành công;0:thất bại
        //Người tạo: To Hoai Chuong
        //Người sửa: 
        //*********************************************************
        public byte f_copyfile(string pstrFilename, string pStrPathFile, string pstrFilenameDes, string pStrPathFileDes)
        {
            byte tempgfCopy_File = 0;

            try
            {
                tempgfCopy_File = 0;
                //kiểm tra có file k?
                if (pStrPathFile + "\\" + pstrFilename != "")
                {
                    if (Directory.Exists(pStrPathFileDes) == false)
                    {
                        Directory.CreateDirectory(pStrPathFileDes);
                    }

                    File.Copy(pStrPathFile + "\\" + pstrFilename, pStrPathFileDes + "\\" + pstrFilenameDes, true);
                }
                else
                {
                    Mod_messagebox mess = new Mod_messagebox();
                    mess.messagebox_pos("Thông báo", "Không tồn tại file", loaithongbao.canhbao.GetHashCode());
                }

                tempgfCopy_File = 1;

            }
            catch (Exception ex)
            {

                Mod_messagebox mess = new Mod_messagebox();
                mess.messagebox_pos("Thông báo", "Không tồn tại file", loaithongbao.canhbao.GetHashCode());
            }
            finally
            {

            }

            return tempgfCopy_File;
        }

        //-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

        //*********************************************************
        //Chức năng: xóa file 
        //Tham số vào: pstrFilename:tên file 
        //   pStrPathFile: đường dẫn file cần xóa
        //Tham số ra: 1:thành công;0:thất bại
        //Người tạo: To Hoai Chuong – 20101005
        //Người sửa: 
        //*********************************************************
        public byte f_deletefile(string pstrFilename, string pStrPathFile)
        {
           
            try
            {
                //kiểm tra có file k?
                if (pStrPathFile + "\\" + pstrFilename != "")
                {
                    File.Delete(pStrPathFile + "\\" + pstrFilename);
                }
                return 1;
            }
            catch (Exception ex)
            {
                Mod_messagebox mess = new Mod_messagebox();
                mess.messagebox_pos("Thông báo", "Không thể xóa file", loaithongbao.canhbao.GetHashCode());
                  return 0;
            }
         
        }

        //------------------------------------------------------------------------------------------------------------------------------------------------------------------------


    // *********************************************************
    //Chức năng: ghi nội dung vào file txt
    //Tham số vào: pStrFilename:tên file
    //pStrPathFile: đường dẫn file text;pStrSession:[session]
    //pStrValue: giá trị cần ghi
   //Tham số ra: mảng chứa các thông báo
   //Người tạo: To Hoai Chuong _ 20101005
   //Người sửa: 
   //*********************************************************
        public byte f_writedataintext(string pStrFilename, string pStrPathFile, string[] pStrSession, string[] pStrValue)
        {
            string gStrPathApp = "";

            byte tempgfWriteFile_Base_Session = 0;

            string[] arrStrTextLine = new string[1]; //chứa nội dung
            string strTextLine = null;
            int lngIndex = 0;
            byte bytRet = 0;

            try
            {
                tempgfWriteFile_Base_Session = 0;
                //kiểm tra có file k?
                if (pStrPathFile + "\\" + pStrFilename != "")
                {
                    //tạo file
                    StreamWriter srwCreatFile = new StreamWriter(pStrPathFile + "\\" + pStrFilename, false, System.Text.Encoding.Unicode);

                    if (pStrSession != null)
                    {
                        int len = pStrSession.Length - 1;
                        int i;

                        for (i = 0; i <= len; i++)
                        {
                            if (pStrSession[i] != "")
                            {
                                srwCreatFile.WriteLine(pStrSession[i]);
                            }
                        }
                    }
                    else
                        return 0;
                    //srwCreatFile.WriteLine("[LANGUAGE]A");
                    //srwCreatFile.WriteLine("[USER]A");
                    //srwCreatFile.WriteLine("[PASS]A");
                 
                    srwCreatFile.Close();
                }

                StreamReader srdReadFile = new StreamReader(pStrPathFile + "\\" + pStrFilename, System.Text.Encoding.Unicode);

                //đọc 1 dòng đầu tiên
                strTextLine = srdReadFile.ReadLine();
               
                while (strTextLine != null)
                {

                    if ((strTextLine.IndexOf(pStrSession[lngIndex], 0) + 1) > 0)
                    {
                        strTextLine = pStrSession[lngIndex] + pStrValue[lngIndex];
                    }

                    //gán giá trị vào mảng
                    arrStrTextLine[lngIndex] = strTextLine;

                    lngIndex += 1;
                    Array.Resize( ref arrStrTextLine, lngIndex + 1);
                    // ReDim Preserve arrStrTextLine(lngIndex)
                   
                    //đọc 1 dòng tiếp theo
                    strTextLine = srdReadFile.ReadLine();
                }

                srdReadFile.Close();
                srdReadFile = null;

                //copy file LPVSAMINI.LSYS ra thư mục
                bytRet = f_copyfile(pStrFilename, pStrPathFile, pStrFilename, Application.StartupPath + "\\baocao_temp");

                //xóa file gốc LPVSAMINI.LSYS
                if (bytRet != 0)
                {
                    bytRet = f_deletefile(pStrFilename, pStrPathFile);
                }

                //tạo file mới
                if (bytRet != 0)
                {
                    bytRet = f_writefile_From_Array(arrStrTextLine, pStrPathFile + "\\" + pStrFilename);
                }

                //xóa file tạm LPVSAMINI.LSYS
                if (bytRet != 0)
                {
                    bytRet = f_deletefile(pStrFilename, Application.StartupPath + "\\baocao_temp");
                }

                tempgfWriteFile_Base_Session = 1;

            }
            catch (Exception ex)
            {
       
                return 0;

            }
            finally
            {

            }

            return tempgfWriteFile_Base_Session;   
        }

       //-------------------------------------------------------------------------------------------------------------------------------------------------------------------

     }  
 }    

